package com.ljm.sys.org.api;

import com.ljm.common.page.PageDto;
import com.ljm.sys.org.dto.SysOrgDepartDto;
import com.ljm.sys.org.dto.SysOrgUserDto;

import java.util.List;

/**
 * <p>
    * 部门表 接口
    * </p>
 *
 * @author ming
 * @since 2019-04-12
 */
public interface SysOrgDepartApi {
    /**
     * 保存部门
     * @param dto 部门信息
     * @param curUser 当前用户
     * @ 异常
     */
    void saveData(SysOrgDepartDto dto, SysOrgUserDto curUser);

    /**
     * 删除部门
     * @param ids 主键集合
     * @ 异常
     */
    void delData(List<Long> ids);

    /**
     * 获取部门信息
     * @param id 主键
     * @return 部门信息
     * @ 异常
     */
    SysOrgDepartDto getDataById(Long id);

    /**
     * 分页获取部门信息
     * @param deptName 部门名称
     * @param type 类型
     * @param pageNo 页码
     * @param pageSize 页大小
     * @return 部门信息
     * @ 异常
     */
    PageDto<SysOrgDepartDto> getDataByPage(String deptName, String type, Integer pageNo, Integer pageSize);

    /**
     * 条件查询部门数据
     * @param parentId 部门id
     * @return 部门数据
     * @ 异常
     */
    List<SysOrgDepartDto> getChildDept(Long parentId);

    /**
     * 获取机构的所有部门
     * @param orgId 机构id
     * @return 部门列表
     * @ 异常
     */
    List<SysOrgDepartDto> getAllDeptByOrgId(String orgId);

    /**
     * 获取机构的root部门
     * @param orgId 机构id
     * @return 部门列表
     * @ 异常
     */
    List<SysOrgDepartDto> getRootDept(String orgId);

}
